using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{	
	public	int operacion = 0;     //que se quiere hacer (+ = 1, - = 2, * = 3, / = 4)
	public	bool pendiente = false;    // si se aprieta un operando pasa a true.
	public	bool separador_decimal = false;   //si se aprieta la coma pasa a true
	public	double primer_numero, segundo_numero, resultado;/* si operacion=0 y se aprieta algún operando el valor de Texto  pasa a  primer_numero, cuando se aprieta el igual el valor de Resultado pasa a segundo_numero y el resultado de la operación a la variable resultado */
	
	public MainWindow (): base (Gtk.WindowType.Toplevel)
	{Build ();}
	
	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
	{
		Application.Quit ();
		a.RetVal = true;
	}

	protected void Uno_clicked (object sender, System.EventArgs e)
	{
		if(pendiente) 
		{ 
			primer_numero = double.Parse(texto.Text); 
			pendiente = false; 
			texto.Text = ""; 
		} 
		texto.Text = texto.Text + (sender as Button).Label; 
	}

	
	protected void Operation_Clicked (object sender, System.EventArgs e)
	{
		if (texto.Text != "") 
		{ 
			pendiente = true; 
			if ((sender as Button).Name == "Mas") operacion = 1; 
			if ((sender as Button).Name == "Menos") operacion = 2; 
			if ((sender as Button).Name == "Por") operacion = 3; 
			if ((sender as Button).Name == "Entre") operacion = 4; 
			separador_decimal = false; 
		} 
	}
			
	protected void Punto_Clicked (object sender, System.EventArgs e)
	{
		if (!separador_decimal) 
			{ 
				if(pendiente) 
				{ 
					primer_numero = double.Parse(texto.Text); 
					pendiente = false; 
					texto.Text = "0,"; 
				} 
				else 
				{ 
					if (texto.Text == "")   
					texto.Text = "0,"; 
					else                        
					texto.Text = texto.Text + ","; 
				} 
				separador_decimal = true; 
			} 
	}

	protected void Igualclicked (object sender, System.EventArgs e)
	{
		if ( (operacion >=1) && (operacion <=4) ) 
		{ 
			segundo_numero = double.Parse(texto.Text); 
			switch(operacion) 
			{ 
				case 1: resultado = primer_numero + segundo_numero; break; 
				case 2: resultado = primer_numero - segundo_numero; break; 
				case 3: resultado = primer_numero * segundo_numero; break; 
				case 4: resultado = primer_numero / segundo_numero; break; 
			} 
			texto.Text = Convert.ToString(resultado); 
			separador_decimal = false; 
			//la mayoria de dificultades me las a solucionado un tutorial de crear una calc
			//la mas importante a sido la manera de coger los numeros y guardarlos en variables y tambien la operacion.
		} 
	}
}
